The ability to extend a baseline architecture and processor functionality through dedicated and specialized hardware functional elements is an important aspect of scaleable and extensible architectures.
One of the preferred methods for extending a baseline architecture and processor functionality is through the use of coprocessors. These are dedicated, usually single purpose processors that operate at the direction of a processor. One of the traditional uses of coprocessors was as math coprocessors to selectively provide floating point capabilities to architectures that did not directly support such. Some example of such math coprocessors are the Intel 8087 and 80287. Some other potential uses or types of coprocessors include: multiply-accumulators, modulator/demodulators (modems), digital signal processors (DSP), vitterbi calculators, cryptographic processors, image processors, and vector processors.
One approach to implementing coprocessors is by use of a coprocessor interface that is tightly coupled enough that usage of the interface is fast enough such that invoking even fairly simple functions is advantageous, while abstracting the interface to such an extent that the processor architecture is isolated from as many of the details of any given coprocessor as possible. For example, such a tightly coupled coprocessor may receive operands and control words via a dedicated interface to the main processor. Often, the main processor will pass a value to a coprocessor after the main processor has generated it based on a set of operations performed by the main processor. After the final modification, it may be sent to the coprocessor. However, this final transfer involves an overhead which may be unacceptable for some coprocessor operations.
Skilled artisans appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help improve the understanding of the embodiments of the present invention.